#include "pointeur.h"
#include <GL/glut.h>
#include <iostream>
using namespace std;

/***********************************/
/*** Constructeurs / Destructeur ***/
/***********************************/

Pointeur::Pointeur() : Objet3D(),_size(1), _str(NULL)
{
  _material->setDiffuse(0.8,0.8,0.8,0.9);
}

Pointeur::Pointeur(double size, string* str): Objet3D(), _size(size)
{
	char *s;
_str = new Text(GLUT_BITMAP_TIMES_ROMAN_24, str);
_textWidth =0;
for (s = (char*) _str->getText()->c_str();*s;s++)
	_textWidth +=glutBitmapWidth(_str->getFont(), *s);
cout <<_textWidth<<endl;

}

Pointeur::~Pointeur()
{
	if(_str)
		delete _str;
}


/******************************/
/****** Getters /Setters ******/
/******************************/

void Pointeur::setPosition(float x, float y, float z)
{

	float a,b,c;

	if(_str)
	{
		_str->getPosition(a,b,c);
		_str->setPosition(a,b+_size,c);
	}
	Objet::setPosition(x,y,z);
}


/*********************************/
/****** Fonction de dessin *******/
/*********************************/

void Pointeur::_draw()
{
	if( Scene::showTips)
	{
		float x,y,z;
		getPosition(x,y,z);
		glDisable(GL_LIGHTING);
		glBegin(GL_TRIANGLES);
		glColor3f(0.0,1.0,0.0);
		glVertex3f(-_size/2.0,_size/1.44,z);
		glVertex3f(_size/2.0,_size/1.44,z);
		glVertex3f(0,0,z);
		glEnd();
	
		glEnable(GL_LIGHTING);
		if (_str)
		{
		_str -> display();
		}
	}
}


